import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import "vant/lib/index.css";
import Vant from "vant";
import dayjs from "dayjs";
import relativeTime from "dayjs/plugin/relativeTime";
import { APIs } from "apis";
// 导入自定义公共组件
import commonComponents from "components";
import initPermission from "./permission.js";
import * as filters from "./common/filters"; // global filters

Vue.use(Vant);
// import {
//     Button,
//     Icon,
//     Progress,
//     Toast,
//     Loading,
//     Tabbar,
//     TabbarItem,
//     Col,
//     Row,
//     Cell,
//     CellGroup,
//     NavBar,
//     Search,
//     Checkbox,
//     CheckboxGroup,
//     Popup,
//     Form,
//     Field,
// } from "vant";
// Vue.use(Button)
//     .use(Icon)
//     .use(Progress)
//     .use(Toast)
//     .use(Loading)
//     .use(TabbarItem)
//     .use(Tabbar)
//     .use(Col)
//     .use(Row)
//     .use(Cell)
//     .use(CellGroup)
//     .use(NavBar)
//     .use(Search)
//     .use(Checkbox)
//     .use(CheckboxGroup)
//     .use(Popup)
//     .use(Form)
//     .use(Field);
Object.keys(filters).forEach(key => {
    Vue.filter(key, filters[key]);
});

class Application {
    constructor(el) {
        this.el = el;
    }

    init() {
        Vue.config.productionTip = false;

        // 初始化全局组件及 UI 库
        this.initComponents();

        // 初始化全局配置
        this.initGlobalSetting();

        // 权限集合
        //this.initPermissions();

        // 初始化 Vue 实例
        this.initVue();
    }

    // 初始化全局组件及 UI 库
    initComponents() {
        Vue.prototype.$APIs = APIs;
        Vue.use(commonComponents);
    }

    //权限集合;
    initPermissions() {
        initPermission();
    }

    // 初始化全局配置
    initGlobalSetting() {
        Vue.prototype.$isFull = filters.isFull
        dayjs.locale("zh-cn");
        dayjs.extend(relativeTime);
    }

    // 初始化 Vue 实例
    initVue() {
        new Vue({
            router,
            store,
            render: h => h(App),
        }).$mount(this.el);
    }
}

new Application("#app").init();
